package com.syh.jn.scm.domain.supplier.entity.stock;

import cn.redscarf.commons.util.bean.ExtBeanUtils;
import cn.redscarf.commons.util.other.ExtAssert;
import cn.redscarf.commons.util.validator.ValidationUtils;
import com.syh.jn.scm.domain.support.SuperBusinessEntity;
import com.syh.jn.scm.dto.supplier.stock.StockSpillMto;
import com.syh.jn.scm.dto.supplier.stock.StockSpillSto;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;

import java.math.BigDecimal;
import java.util.UUID;

/**
 * 报溢单项实体
 */
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
public class StockSpillItem extends SuperBusinessEntity<Long> {

  //新增
  public StockSpillItem(StockSpillSto.StockSpillItemSto sto) {
    ExtAssert.notNull(sto, "新增明细为空");
    ValidationUtils.validate(sto);
    ExtBeanUtils.copyProperties(sto, this);
    this.uuid = UUID.randomUUID().toString();
  }

  //修改
  public StockSpillItem(StockSpillMto.StockSpillItemMto mto) {
    ExtAssert.notNull(mto, "修改明细为空");
    ValidationUtils.validate(mto);
    ExtBeanUtils.copyProperties(mto, this);
    this.uuid = UUID.randomUUID().toString();
  }

  /**
   * 对应报溢单id
   */
  private Long spillId;
  /**
   * 库存商品ID
   */
  private Long stockGoodsId;
  /**
   * 商品ID
   */
  private Long goodsId;
  /**
   * 商品名称
   */
  private String goodsName;
  /**
   * 商品编码
   */
  private String code;
  /**
   * 所属种类,应用分类编码
   */
  private String categoryCatalogCode;
  /**
   * 分类id
   */
  private Long categoryId;
  /**
   * 分类名称
   */
  private String categoryName;
  /**
   * 品牌id
   */
  private Long goodsBrandId;
  /**
   * 品牌名称
   */
  private String goodsBrandName;
  /**
   * 规格
   */
  private String specName;
  /**
   * 计量单位
   */
  private String units;
  /**
   * 与基础商品转换率（如果是基础商品 则等于1）
   */
  private BigDecimal conversionRate;
  /**
   * 报溢数量
   */
  private BigDecimal quantity;
  /**
   * 商品平均单价
   */
  private BigDecimal averageCost;
  /**
   * 备注
   */
  private String remark;
}
